package com.sz.biz.logistics.billing.dto;

import com.sz.biz.logistics.base.entity.WeightSection;
import com.sz.biz.logistics.core.entity.FreightItem;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * Function: 单价格的计算结果（服务成本价、产品销售价共用）. <br>
 * Date: 2017年04月20日 14:34 <br>
 * Author: wentao.chang
 */
public class QuotationCalcResult implements Serializable {
    /**
     * 是否计算出结果
     */
    private boolean hasResult = false;

    /**
     * 匹配到的结算方式id
     */
    protected int settlementId;

    /**
     * 供应商的id
     */
    private int supplierId;

    /**
     * 匹配到的feeTypeId
     */
    protected int feeTypeId;

    /**
     * 匹配到的报价货币code
     */
    protected String currencyCode;

    /**
     * 服务的类型
     */
    private String serviceTypCode;
    /**
     * 服务的类型的名字
     */
    private String serviceTypCodeName;

    /**
     * 客户货币code
     */
    protected String custCurrencyCode;
    /**
     * 客户货币金额
     */
    protected BigDecimal custCurrencyAmount;
    /**
     * 汇率
     */
    protected BigDecimal exchangeRate;

    /**
     * 服务的id
     */
    private int serviceId;
    /**
     * 服务的uid
     */
    private String serviceUid;

    /**
     * 是否可选服务
     */
    private boolean isOptional = false;
    /**
     * 服务的名字
     */
    private String serviceName;

    /**
     * 产品的分组Id
     */
    private int groupId;
    /**
     * 产品的分组名
     */
    private String groupName;
    /**
     * 产品的id
     */
    private int productId;
    /**
     * 产品的id
     */
    private String productUid;
    /**
     * 产品的名字
     */
    private String productName;

    /**
     * 匹配到的产品EstimatedTime
     */
    protected BigDecimal productEstimatedTime;

    /**
     * 匹配到的产品EstimatedUnit
     */
    protected String productEstimatedUnit;

    /**
     * 匹配到的价格Id
     */
    protected int quotationId;
    /**
     * 匹配到的价格Uid
     */
    protected String quotationUid;
    /**
     * 匹配到的价格编码
     */
    protected String quotationCode;
    /**
     * 匹配到的价格名称
     */
    protected String quotationName;
    /**
     * 匹配到的报价的类型 1等级价 2协议价 3套餐价
     */
    private int quotationGradeType = 1;
    /**
     * 匹配到的报价的等级
     */
    private int quotationGrade;

    /**
     * 匹配到的目的分区Id
     */
    protected int regionId;

    /**
     * 使用到的价格表
     */
    protected List<FreightItem> freightItems = new ArrayList<>();

    /**
     * 使用到的重量段的方案id
     */
    private int weightSchemaId;
    /**
     * 使用到的重量段
     */
    List<WeightSection> weightSections = new ArrayList<>();

    /**
     * 计算结果
     */
    protected BigDecimal amount;

    /**
     * 计费重量
     */
    protected BigDecimal feeWeight;

    protected String feeWeightUnitCode;

    /**
     * 体积重量
     */
    protected BigDecimal volumeWeight;

    protected String volumeWeightUnitCode;

    public List<FreightItem> getFreightItems() {
        return freightItems;
    }

    public void setFreightItems(List<FreightItem> freightItems) {
        this.freightItems = freightItems;
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public List<WeightSection> getWeightSections() {
        return weightSections;
    }

    public void setWeightSections(List<WeightSection> weightSections) {
        this.weightSections = weightSections;
    }

    public int getRegionId() {
        return regionId;
    }

    public void setRegionId(int regionId) {
        this.regionId = regionId;
    }

    public int getQuotationId() {
        return quotationId;
    }

    public void setQuotationId(int quotationId) {
        this.quotationId = quotationId;
    }

    public int getServiceId() {
        return serviceId;
    }

    public void setServiceId(int serviceId) {
        this.serviceId = serviceId;
    }

    public String getServiceName() {
        return serviceName;
    }

    public void setServiceName(String serviceName) {
        this.serviceName = serviceName;
    }

    public boolean isHasResult() {
        return hasResult;
    }

    public void setHasResult(boolean hasResult) {
        this.hasResult = hasResult;
    }

    public String getServiceUid() {
        return serviceUid;
    }

    public void setServiceUid(String serviceUid) {
        this.serviceUid = serviceUid;
    }

    public int getProductId() {
        return productId;
    }

    public void setProductId(int productId) {
        this.productId = productId;
    }

    public String getProductUid() {
        return productUid;
    }

    public void setProductUid(String productUid) {
        this.productUid = productUid;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public int getSettlementId() {
        return settlementId;
    }

    public void setSettlementId(int settlementId) {
        this.settlementId = settlementId;
    }

    public String getCurrencyCode() {
        return currencyCode;
    }

    public void setCurrencyCode(String currencyCode) {
        this.currencyCode = currencyCode;
    }
    /**
     * 服务的类型
     */
    public String getServiceTypCode() {
        return serviceTypCode;
    }
    /**
     * 服务的类型
     */
    public void setServiceTypCode(String serviceTypCode) {
        this.serviceTypCode = serviceTypCode;
    }

    public String getServiceTypCodeName() {
        return serviceTypCodeName;
    }

    public void setServiceTypCodeName(String serviceTypCodeName) {
        this.serviceTypCodeName = serviceTypCodeName;
    }

    public int getQuotationGradeType() {
        return quotationGradeType;
    }

    public void setQuotationGradeType(int quotationGradeType) {
        this.quotationGradeType = quotationGradeType;
    }

    public int getQuotationGrade() {
        return quotationGrade;
    }

    public void setQuotationGrade(int quotationGrade) {
        this.quotationGrade = quotationGrade;
    }

    public String getQuotationCode() {
        return quotationCode;
    }

    public void setQuotationCode(String quotationCode) {
        this.quotationCode = quotationCode;
    }

    public String getQuotationName() {
        return quotationName;
    }

    public void setQuotationName(String quotationName) {
        this.quotationName = quotationName;
    }

    public int getWeightSchemaId() {
        return weightSchemaId;
    }

    public void setWeightSchemaId(int weightSchemaId) {
        this.weightSchemaId = weightSchemaId;
    }

    public String getQuotationUid() {
        return quotationUid;
    }

    public void setQuotationUid(String quotationUid) {
        this.quotationUid = quotationUid;
    }

    public int getFeeTypeId() {
        return feeTypeId;
    }

    public void setFeeTypeId(int feeTypeId) {
        this.feeTypeId = feeTypeId;
    }

    public int getSupplierId() {
        return supplierId;
    }

    public void setSupplierId(int supplierId) {
        this.supplierId = supplierId;
    }

    public boolean isOptional() {
        return isOptional;
    }

    public void setOptional(boolean optional) {
        isOptional = optional;
    }

    public BigDecimal getFeeWeight() {
        return feeWeight;
    }

    public void setFeeWeight(BigDecimal feeWeight) {
        this.feeWeight = feeWeight;
    }

    public String getFeeWeightUnitCode() {
        return feeWeightUnitCode;
    }

    public void setFeeWeightUnitCode(String feeWeightUnitCode) {
        this.feeWeightUnitCode = feeWeightUnitCode;
    }

    public String getCustCurrencyCode() {
        return custCurrencyCode;
    }

    public void setCustCurrencyCode(String custCurrencyCode) {
        this.custCurrencyCode = custCurrencyCode;
    }

    public BigDecimal getCustCurrencyAmount() {
        return custCurrencyAmount;
    }

    public void setCustCurrencyAmount(BigDecimal custCurrencyAmount) {
        this.custCurrencyAmount = custCurrencyAmount;
    }

    public BigDecimal getExchangeRate() {
        return exchangeRate;
    }

    public void setExchangeRate(BigDecimal exchangeRate) {
        this.exchangeRate = exchangeRate;
    }

    public BigDecimal getProductEstimatedTime() {
        return productEstimatedTime;
    }

    public void setProductEstimatedTime(BigDecimal productEstimatedTime) {
        this.productEstimatedTime = productEstimatedTime;
    }

    public String getProductEstimatedUnit() {
        return productEstimatedUnit;
    }

    public void setProductEstimatedUnit(String productEstimatedUnit) {
        this.productEstimatedUnit = productEstimatedUnit;
    }

    public int getGroupId() {
        return groupId;
    }

    public void setGroupId(int groupId) {
        this.groupId = groupId;
    }

    public String getGroupName() {
        return groupName;
    }

    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }

    public BigDecimal getVolumeWeight() {
        return volumeWeight;
    }

    public void setVolumeWeight(BigDecimal volumeWeight) {
        this.volumeWeight = volumeWeight;
    }

    public String getVolumeWeightUnitCode() {
        return volumeWeightUnitCode;
    }

    public void setVolumeWeightUnitCode(String volumeWeightUnitCode) {
        this.volumeWeightUnitCode = volumeWeightUnitCode;
    }
}
